package com.yangwudi.mapper;

import com.yangwudi.pojo.Dept;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.DeleteMapping;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface DeptMapper {
    /**
     * 查询所有部门数据
     */
//    //数据封装
//    //方式一: 手动结果映射: 通过@Results @Result 进行手动结果映射
//    @Results({
//            @Result(column = "create_time",property = "createTime"),
//            @Result(column = "update_time",property = "updateTime")
//    })
    //方式二: 起别名: 在SQL语句中，对不一样的列名起别名，别名和实体类属性名一样
//    @Select("select id,name,create_time createTime,update_time updateTime from dept order by update_time desc ")

//    方式三: 开启驼峰命名:如果字段名与属性名符合驼峰命名规则，mybatis会自动通过驼峰命名规则映射（推荐！！！）
    @Select("select id,name,create_time,update_time from dept order by update_time desc ")
    List<Dept> findAll();

    /**
     * 根据ID删除部门
     */
    @Delete("delete from dept where id=#{id}")
    void deleteById(Integer id);

    /**
     * 新增部门
     */
    @Insert("insert into dept(name,create_time,update_time) values(#{name},#{createTime},#{updateTime})")
    void insert(Dept dept);


    /**
     * 根据ID查询部门
     */
    @Select("select id, name, create_time, update_time from dept where id =#{id}")
    Dept getById(Integer id);

    /**
     * 根据ID更新部门
     */
    @Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}")
    void update(Dept dept);

}
